<?php

/**
 * model: activeren gebruikersaccount
 * 
 * @package     Aanmelden
 * @subpackage  Model
 * @author      Ronny Sweetlove
 */

namespace Aanmelden\Model;

class Activeer {
    private $_rslt = ['gevonden' => false, 'id' => 0, 'code' => '', 'naam' => ''];
    private $_json = ['resultaat'=>false,'boodschap'=>''];

    public function verifieer() {
        if (filter_input(INPUT_GET, 'acode')) {
            $this->_getCode();
        }
        return $this->_rslt;
    }
    
    private function _getCode() {
        $aCode = filter_input(INPUT_GET, 'acode', FILTER_SANITIZE_STRIPPED, FILTER_SANITIZE_STRING);
        $dbSql = "SELECT id,CONCAT_WS(' ',voornaam,naam) AS naam FROM persoon WHERE code=:code AND status=1";
        try {
            $dbStmt = \Db::GET()->prepare($dbSql);
            $dbStmt->execute([':code' => $aCode]);
            if ($dbStmt->rowCount() == 1) {
                $this->_rslt['gevonden'] = true;
                $dbRij = $dbStmt->fetch(\PDO::FETCH_ASSOC);
                $this->_rslt['id'] = $dbRij['id'];
                $this->_rslt['naam'] = $dbRij['naam'];
                return true;
            }
        } catch (PDOException $ex) {
            
        }
        return false;
    }
    
    public function activeer() {
        $wachtwoord = filter_input(INPUT_POST,'wachtwoord',FILTER_SANITIZE_STRIPPED,FILTER_SANITIZE_STRING);
        $wachtwoordBevestig = filter_input(INPUT_POST,'wachtwoordbevestig',FILTER_SANITIZE_STRIPPED,FILTER_SANITIZE_STRING); 
        $idPersoon = filter_input(INPUT_POST,'idpersoon',FILTER_SANITIZE_NUMBER_INT);//TOD NOT SAVE to use use code
        
        if ($wachtwoord && $idPersoon) {
            if ($wachtwoord == $wachtwoordBevestig) {
                $validatie = new \Validatie();
                if ($validatie->wachtwoord($wachtwoord)) {
                    if ($this->_activeerAccount($wachtwoord,$idPersoon)) {
                        $this->_json['boodschap'] = 'Wachtwoord werd met succes geupdate.  Meld je aan met behulp van de knop Aanmelden...';
                        $this->_json['resultaat'] = true;
                    } else {
                        $this->_json['boodschap'] = 'fout bijn updaten wachtwoord';
                    }
                } else {
                    $this->_json['boodschap'] = 'wachtwoord voldoet niet aan vereisten';
                }
            } else {
                $this->_json['boodschap'] = 'wachtwoord en bevetiging wacxhtwoord verschillen';
            }
                                       
        } else {
            $this->_json['boodschap'] = 'wachtwoord vereist';
        }
        return $this->_json;
    }
    
    public function _activeerAccount($wachtwoord,$idPersoon) {
        $dbSql = "UPDATE persoon SET wachtwoord=sha1(:wachtwoord), status=0, code='' WHERE id=:idpersoon AND status=1";
        try {
            $dbStmt = \Db::GET()->prepare($dbSql);
            $dbStmt->execute([':wachtwoord'=>$wachtwoord,':idpersoon'=>$idPersoon]);
            return true;
        } catch (PDOException $ex) {
            return false;
        }
    }
}